package iserver

import (
	"net"
	"src/zeus/msgdef"
	"src/zeus/threads"
)

// ISess 代表一个网络连接
type ISess interface {
	IMsgHandler

	SetMsgHandler(handler IMsgHandler)
	// Send 发送消息 将消息加入发送队列，等待loop发送
	Send(msgdef.IMsg)
	// SendNow 立刻发送消息 只能用在sess加入管理之前
	SendNow(msgdef.IMsg)

	SendRaw([]byte)

	Start(*threads.ThreadGo)
	Close()
	IsClosed() bool

	RemoteAddr() string

	IsVerified() bool
	SetVerify()
	IsClientToSrvSess() bool //客户端到服务器的会话

	SetID(uint64) //服务器会话是SrvId 玩家客户端会话是Pid ????? 待验证
	GetID() uint64
	GetType() ServerType2
	SetType(stype ServerType)
	// 设置是否输出消息
	SetInputMsg(v bool)
	SetRecvMsg(v bool)
	IsSrvToClientSess() bool  //服务器到客户端的会话
	IsPlayerClientSess() bool //是否是玩家客户端会话
	Touch()                   //服务器到客户端的会话 在进行心跳后 标记下次超时时间

	FetchBacklog(ISess)
	FlushBacklog()
	GetConn() net.Conn
	//被人顶了，关链接逻辑
	SetDuplicate()
}
